#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

/*
一、内存区域的划分
四个：常量区、栈区、堆区、静态全局区
五个：常量区、栈区、堆区、静态全局区、代码区

1、代码区：存代码
2、常量区：存常量
3、静态全局区：静态变量、全局变量、static
4、栈区：普通局部变量
5、堆区：由程序员手动申请，手动释放

探究：
1、为什么称呼为静态
2、作用域、生命周期

*/
int bb; //普通全局变量
//作用域：当前项目，和65.c同一级目录下的文件都包含,但存在问题
//生命周期：程序开始到结束

static int d; //静态全局变量
//作用域：当前文件
//生命周期：程序开始到结束

void func()
{
	static int num=10; //只会定义一次 
	int val =20;
	printf("num=%d\t",num);
	num++;
	printf("num=%d\n",num);

	printf("val=%d\t",val);
	val++;
	printf("val=%d\n",val);
}

int main()
{
	int a; //普通局部变量，尽量初始化，32位时存在问题
	//作用域：当前语块
	//生命周期：当前语块


	static int c; //静态局部变量
	//作用域：当前语块
	//生命周期：程序开始到结束

	printf("a=%d\n",a);
	printf("bb=%d\n",bb);
	printf("c=%d\n",c);
	printf("d=%d\n",d);

	func();
	func();

	//system("pause");
	return 0;
} 